#pragma once

#include <stdlib.h>
#include "BinaryTree.h"
#include <assert.h>

#ifndef MALLOC
#define MALLOC(_type_, _count_) (_type_*)malloc(sizeof(_type_) * (_count_))
#endif

typedef struct TreeNode TreeNode;

typedef struct Node{
    /* data */
    TreeNode* data;
    struct Node* next;

}Node;

typedef struct 
{
    /* data */
    Node* front;
    Node* rear;
}Queue;

Node* NodeCreate(TreeNode* data);

Queue* QueueInit();

void Enqueue(Queue* queue, TreeNode* data);

TreeNode* Dequeue(Queue* queue);

void QueueDestroy(Queue* queue);

bool QueueEmpty(Queue* queue);
